#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define _NFUNC 300
#define _NOME_TAM 100
#define _NSERVICOS 3

int main() {
	int i;
	float pctcomissao, tfolha_pg = 0;
	char func_nomes[_NFUNC][_NOME_TAM];
	float relatorio[_NFUNC][6];
	float vservico[_NSERVICOS];

	puts("<< RELATORIO: FOLHA DE PAGAMETO >>");
	puts("\nInforme o valor em R$ dos seguintes tipos de servicos: ");
	for (i = 0; i < _NSERVICOS; i++) {
		printf("Servico tipo %c: R$ ", (char) i + 65);
		fflush(stdout);
		fflush(stdin);
		scanf("%f", &vservico[i]);
	}

	printf("Informe a %% da comissao: ");
	fflush(stdout);
	fflush(stdin);
	scanf("%f", &pctcomissao);

	for (i = 0; i < _NFUNC; i++) {
		puts("<< INFORME: NOME DOS FUNCIONARIOS, QTD DE SERVICOS REALIZADOS E SALARIO FIXO >>");
		puts("   Digite sair no lugar do nome para encerrar a insercao");

		printf("\nDigite o nome do fucionario: ");
		fflush(stdout);
		fflush(stdin);
		scanf("%s",func_nomes[i]);

		if ((strcmp(func_nomes[i], "sair") == 0)
				|| (strcmp(func_nomes[i], "Sair") == 0)
				|| (strcmp(func_nomes[i], "SAIR") == 0)) {
			break;
		}

		// fazendo as insersões e processamento dos dados
		// inserindo a quantidade de serviços realizado
		puts("\nInfome a quantidade de servicos prestados para: ");
		printf("Servico Tipo A: ");
		fflush(stdout);
		fflush(stdin);
		scanf("%f", &relatorio[i][0]);

		printf("Servico Tipo B: ");
		fflush(stdout);
		fflush(stdin);
		scanf("%f", &relatorio[i][1]);

		printf("Servico Tipo C: ");
		fflush(stdout);
		fflush(stdin);
		scanf("%f", &relatorio[i][2]);

		// calculando a comissao
		relatorio[i][3] = (relatorio[i][0] * vservico[0] + relatorio[i][1] * vservico[1] + relatorio[i][2] * vservico[2]) * (pctcomissao / 100);

		// entrando com o valor fixo do salario
		printf("\nInforme a parcela fixa do salario: R$ ");
		fflush(stdout);
		fflush(stdin);
		scanf("%f", &relatorio[i][4]);

		// calculando o salario total
		relatorio[i][5] = relatorio[i][3] + relatorio[i][4];

		// totalizando a folha de pagamento
		tfolha_pg += relatorio[i][5];
	}

	puts("<<< VALORES DOS SERVICOS >>>");
	printf("\nTipo A: R$ %.2f", vservico[0]);
	printf("\nTipo B: R$ %.2f", vservico[1]);
	printf("\nTipo C: R$ %.2f", vservico[2]);
	printf("\nValor da Comissao: %.2f%%\n\n", pctcomissao);

	puts("<<< RELATORIO >>>");
	puts("-----------------------------------------------------------------------------");
	puts("\t\t\tFOLHA DE PAGAMENTO");
	puts("-----------------------------------------------------------------------------");
	puts("|    Nome Func    | QtA | QtB | QtC | Comissao |   P. Fixa   |    Salario  |");
	puts("-----------------------------------------------------------------------------");

	for (i = 0; i < _NFUNC; i++) {
		if ((strcmp(func_nomes[i], "sair") == 0)
				|| (strcmp(func_nomes[i], "Sair") == 0)
				|| (strcmp(func_nomes[i], "SAIR") == 0)) {
			break;
		} else {
			printf("| %15s | %3.0f | %3.0f | %3.0f | R$ %6.2f | R$ %8.2f | R$ %8.2f |\n",
					func_nomes[i], relatorio[i][0], relatorio[i][1],
					relatorio[i][2], relatorio[i][3], relatorio[i][4],
					relatorio[i][5]);
			puts("-----------------------------------------------------------------------------");
		}
	}

	printf("\n");
	puts("-----------------------------------------------------------------------------");
	printf("|\t\tTotal da folha de pagamento: R$ %.2f\t\t\t    |\n", tfolha_pg);
	puts("-----------------------------------------------------------------------------");
	printf("\n\n\n");

	return 1;
}
